home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine CD 1995 / Archive Magazine CD 1995.iso / discs / prog_disc / volume_8 / issue_01 / hd_speed / !HDspeed / source (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1994-08-21  |  6.2 KB  |  243 lines

  1.  -> HDspeed    Simple program to make comparitive tests 
  2.                of hard disc and interface speed
  3.  -------  Change these values if you wish -------
  4. @rnd_file% = 8192   :
  5.  Size in Kb for random access file used
  6. Eblockfile%= 2048   :
  7.  Size in Kb of data used for block load/save
  8.  "Wimp_Initialise",200,&4B534154,"HD Speed" 
  9.  ,hand%
  10. =handle%=-1:r_file%=rnd_file%*1024:b_file%=blockfile%*1024
  11.  app_dir% &100, results% 128, filename% 32, appname% 32, rnd% 5100, baseline% 64
  12. @$appname%="HD Speed Test"+
  13. "Wimp_CommandWindow",appname%
  14. memsz%=
  15. -&8000:buff%=
  16. '"Error ";
  17. ;" : "+
  18.  handle%>=0 
  19. #handle%:
  20. "OS_ReadVarVal","Obey$Dir",app_dir%,256,0 
  21.  ,,L%
  22. app_dir%?L%=13
  23. test$=$app_dir%+".temp"
  24. file_sys$="":I%=app_dir%
  25. ?I%<>58:file_sys$+=
  26. (?I%):I%+=1:
  27. drive_name$="":I%+=1
  28. ?I%<>46:drive_name$+=
  29. (?I%):I%+=1:
  30.  file_sys$+"_FreeSpace",drive_name$+
  31.  free%,biggest%
  32.  r_file%>b_file% max%=r_file% 
  33.  max%=b_file%
  34.  free%<max% 
  35.  0,"HD Speed needs at least ";max%
  36. 1024;" Kb of free space to create test file":
  37. baseline
  38. "OS_File",11,test$,&FFD,,0,r_file%
  39. "OS_Find",&CC,test$ 
  40.  handle%
  41. wkspc(64*1024)=
  42.  0,"Not enough RAM for buffers"
  43. 'a$;+r_file%
  44. 1024;" Kb"'
  45.  I%=0
  46. #handle%=0:
  47.  J%=1
  48. &C800:K%=
  49. #handle%:
  50. %5!results%=
  51. :!baseline%=(!baseline%/!results%)*100
  52. num_str(!results%);
  53. num_str(!baseline%);"%"
  54.  a$;:
  55.  I%=0
  56. #handle%=0:
  57.  J%=1
  58. &C800:
  59. #handle%,K%:
  60. )9results%!4=
  61. :baseline%!4=(baseline%!4/results%!4)*100
  62. num_str(results%!4);
  63. num_str(baseline%!4);"%"
  64. #handle%=0:
  65.  J%=1
  66. &7D000:K%=
  67. #handle%:
  68. -9results%!8=
  69. :baseline%!8=(baseline%!8/results%!8)*100
  70. num_str(results%!8);
  71. num_str(baseline%!8);"%"
  72.  a$;:
  73. #handle%=0:
  74.  J%=1
  75. &7D000:
  76. #handle%,K%:
  77. :results%!12=
  78. 1=results%!12=
  79. :baseline%!12=(baseline%!12/results%!12)*100
  80. num_str(results%!12);
  81. num_str(baseline%!12);"%"
  82. 3.I%=
  83. (-10):
  84.  I%=0
  85. 4:rnd%!I%=
  86. (&FFFF):
  87.  a$;:
  88.  I%=0
  89.  &C,3,handle%,buff%,1,rnd%!I%:
  90. 6=results%!16=
  91. :baseline%!16=(baseline%!16/results%!16)*100
  92. num_str(results%!16);
  93. num_str(baseline%!16);"%"
  94.  a$;:
  95.  I%=0
  96.  &C,1,handle%,buff%,1,rnd%!I%:
  97. :2I%=
  98. (-10):
  99.  I%=0
  100. 4:rnd%!I%=
  101. (r_file%-1):
  102. ;=results%!20=
  103. :baseline%!20=(baseline%!20/results%!20)*100
  104. num_str(results%!20);
  105. num_str(baseline%!20);"%"
  106.  a$;:
  107.  I%=0
  108.  &C,3,handle%,buff%,1,rnd%!I%:
  109. ?=results%!24=
  110. :baseline%!24=(baseline%!24/results%!24)*100
  111. num_str(results%!24);
  112. num_str(baseline%!24);"%"
  113.  a$;:
  114.  I%=0
  115.  &C,1,handle%,buff%,1,rnd%!I%:
  116. C=results%!28=
  117. :baseline%!28=(baseline%!28/results%!28)*100
  118. num_str(results%!28);
  119. num_str(baseline%!28);"%"
  120. #handle%:handle%=-1
  121. 'a$;+b_file%
  122. 1024;+" Kb"'
  123.  I%=0
  124.  8,10,test$,&FFD,,buff%,buff%+&2800:
  125. J=results%!32=
  126. :baseline%!32=(baseline%!32/results%!32)*100
  127. num_str(results%!32);
  128. num_str(baseline%!32);"%"
  129.  I%=0
  130.  8,16,test$,buff%,0:
  131. N=results%!36=
  132. :baseline%!36=(baseline%!36/results%!36)*100
  133. num_str(results%!36);
  134. num_str(baseline%!36);"%"
  135. wkspc(b_file%)=
  136.  0,"Not enought RAM for block file buffers"
  137.  I%=0
  138.  8,10,test$,&FFD,,buff%,buff%+b_file%:
  139. S=results%!40=
  140. :baseline%!40=(baseline%!40/results%!40)*100
  141. num_str(results%!40);
  142. num_str(baseline%!40);"%"
  143.  I%=0
  144.  8,16,test$,buff%,0:
  145. W=results%!44=
  146. :baseline%!44=(baseline%!44/results%!44)*100
  147. num_str(results%!44);
  148. num_str(baseline%!44);"%"
  149.  I%=0
  150.  8,10,test$,&FFD,,buff%,buff%+&C800:
  151.  8,16,test$,buff%,0:
  152. [=results%!48=
  153. :baseline%!48=(baseline%!48/results%!48)*100
  154. num_str(results%!48);
  155. num_str(baseline%!48);"%"
  156.  I%=0
  157.  8,10,test$,&FFD,,buff%,buff%+&80000:
  158.  8,16,test$,buff%,0:
  159. _=results%!52=
  160. :baseline%!52=(baseline%!52/results%!52)*100
  161. num_str(results%!52);
  162. num_str(baseline%!52);"%"
  163.  I%=0
  164.  8,10,test$,&FFD,,buff%,buff%+b_file%:
  165.  8,16,test$,buff%,0:
  166. c=results%!56=
  167. :baseline%!56=(baseline%!56/results%!56)*100
  168. num_str(results%!56);
  169. num_str(baseline%!56);"%"
  170. "OS_File",6,test$
  171. '" Enter filename for results (RETURN = don't save)"'"     :- ";
  172. "OS_ReadLine",filename%,11,33,255 
  173.  ,len%
  174.  len%>0 
  175.  filename%?len%=13
  176.  p%=buff%:
  177. l1 $p%=" Speed test carried out on '"+$app_dir%
  178. m- I%=p%:
  179. :I%+=1:
  180. ?I%=46:?I%=13:$I%="' on "
  181.  I%?5=0:
  182. "OS_Word",14,I%+5
  183. o# p%=
  184. next_line(p%):?p%=10:p%+=1
  185. p< $p%=" All times are in centi-seconds":p%=
  186. next_line(p%)
  187.  $p%:$p%+=
  188. (r_file%
  189. 1024)+" Kb"
  190. r# p%=
  191. next_line(p%):?p%=10:p%+=1
  192.  I%=0
  193.  $p%:$p%+=
  194. num_str(results%!(I%*4))+
  195. num_str(baseline%!(I%*4))+"%":p%=
  196. next_line(p%)
  197.  ?p%=10:p%+=1:
  198.  $p%:$p%+=
  199. (b_file%
  200. 1024)+" Kb"
  201. x# p%=
  202. next_line(p%):?p%=10:p%+=1
  203.  I%=8
  204.  $p%:$p%+=
  205. num_str(results%!(I%*4))+
  206. num_str(baseline%!(I%*4))+"%":p%=
  207. next_line(p%)
  208. "OS_File",10,$app_dir%+".results."+$filename%,&FFF,0,buff%,p%
  209.  "Wimp_CloseDown",hand%,&4B534154
  210. num_str(num%)
  211. (num%))," ")+
  212. (num%)
  213. next_line(pt%)
  214. :pt%+=1:
  215.  ?pt%<32
  216. ?pt%=10
  217. =pt%+1
  218. wkspc(sz%)
  219. "Wimp_SlotSize",memsz%+sz%,-1 
  220.  e%<(memsz%+sz%):=
  221.  " Byte access tests, large file size = "
  222.  "   Read 50K sequential bytes 10 times "
  223.  "   Write 50K sequential bytes 10 times"
  224.  "   Read 500K sequential bytes         "
  225.  "   Write 500K sequential bytes        "
  226.  "   50 Kb file read 1,000 random bytes "
  227.  "   50 Kb file write 1,000 random bytes"
  228.  "   Large file read 1,000 random bytes "
  229.  "   Large file write 1,000 random bytes"
  230.  " Block data load/save, large file size = "
  231.  "   Save 50Kb file 100 times           "
  232.  "   Load 50Kb file 100 times           "
  233.  "   Save large block file 10 times     "
  234.  "   Load large block file 10 times     "
  235.  "   Save/load 50 Kb file 25 times      "
  236.  "   Save/load 512 Kb file 10 times     "
  237.  "   Save/load large block file 10 times"
  238. baseline
  239.  I%=0
  240.  J%:baseline%!I%=J%
  241.  4694,5549,4715,5547,1806,3331,9326,17093
  242.  19029,18343,24571,30584,31644,34836,45965
  243.